<?php

namespace App\Http\Controllers\Admin\User;

use App\Http\Controllers\Controller;
use App\Models\User;
use App\Transformers\User\UserTransformer;
use Carbon\Carbon;
use Illuminate\Http\Request;

class SetIntegralController extends Controller
{
    public $model = User::class;

    public $transformer = UserTransformer::class;

    /**
     * 设置 用户余额 和 用户积分
     */
    public function setintegral(User $user, Request $request)
    {
        //设置用户的积分  判断传来的是增加还是减少 1为增加 0为减少
        if ($request->set_integral) {
            $user->integral = $user->integral + $request->integral;
        } else {
            $user->integral = $user->integral - $request->integral;
        }
        //判断 用户传来的是增加还是减少余额  1为增加余额 0为减少余额
        if ($request->set_balance) {
            $user->balance = $user->balance + $request->balance;
        } else {
            $user->balance = $user->balance - $request->balance;
        }
        $user->save();
        //返回执行添加后的状态
        return $this->response->noContent();
    }

    //赠送会员的方法
    public function giftmember(User $user, Request $request)
    {
        //获取到表单中传来的内容并转化为整形
        $time = intval($request->member_time);
        //判断要修改的用户的时间是否为空
        if (empty($user->member_time)) {
            //为空的话让当前的时间加上表单中传来的时间 等于用户会员的到期的时间
            $user->member_time = Carbon::now()->addDay($time);
        } else {
            //如果不为空的话让用户会员的到期时间 加上要添加的时间
            $user->member_time = $user->member_time->addDay($time);
        }
        //执行添加
        $user->save();
        //返回执行添加后的状态
        return $this->response->noContent();
    }

    //修改用户分组的方法
    public function getrgroup(User $user, Request $request)
    {
        //将要修改的用户的分组的id改为表单传来的分组的id
        $user->group_id = $request->group_id;
        // 执行添加
        $user->save();
        //返回添加后的响应
        return $this->response->noContent();
    }

    //单个用户设置标签
    public function getlable(User $user, Request $request)
    {
        //删除用户的所用的所有的标签
        $user->userLabel()->detach();
        //使用模型注入获取到要进行修改的用户 添加表单中传来的所有的值
        $user->userLabel()->attach($request->label_id);
        //返回更新后的状态
        return $this->response->noContent();
    }

    //设置用户的推广人
    public function getpromoter(User $user, Request $request)
    {
        //设置要修改的用户的推广人的id为 表单中传来的id
        $user->promoter_id = $request->promoter_id;
        $user->save();
        //返回执行添加后的状态
        return $this->response->noContent();
    }
}
